[Design pattern]: 设计模式相关系列
介绍
概念: 定义对象间的一种一对多的依赖关系 ,当一个对象的状态发生改变时 , 所有依赖于它的对象都得到通知并被自动更新。
应用场景: 例如新闻订阅模式,邮件订阅等,客户端是观察者,新闻发布平台是被观察者,最重要的一点是被观察者控制着主动权. 注意区分的是:和时下的新闻APP并不相同,现在新闻APP采用的是客户端掌握了新闻更新的主动权.
好处: 一处改变,处处改变.
接来下实现一个游戏存档与读档的功能
CODE
在Java中有已经预定义好的发布-订阅模式的抽象类和接口,直接使用就好了.如果想要自己实现,源代码也很简单,仿写即可.JDK中定义的订阅者接口是java.util.Observer,发布者抽象类是java.util.Observable
下面编写实例
订阅者(观察者)
1 | package note.com.observer; |
发布者(被观察者)
1 | package note.com.observer; |
测试类
1 | package note.com.observer; |
结果
1 | 辽宁电视台:国家农业税免收 |
从例子中可以看到定义了4个订阅者,也就是四个电视台的对象和一个发布者.发布者更新新闻信息,四个电视台同时执行了update方法根据发布者的更新内容执行对应的更新操作.